# -*-coding: Utf-8 -*-
# @File : common .py
# author: Chimengmeng
# blog_url : https://www.cnblogs.com/dream-ze/
# Time：2023/6/12

import hashlib
import random


def get_verify_code(n):
    '''
    生成六位随机 （数字 + 大小写） 验证码
    '''
    code = ''
    for i in range(n):
        random_int = str(random.randint(0, 9))  # 0-9之间的整数
        random_upper = chr(random.randint(65, 90))  # A-Z之间的字母
        random_lower = chr(random.randint(97, 122))  # a-z之间的字母
        temp = random.choice([random_int, random_upper, random_lower])
        code += temp
    return code


def encrypt_decrypt(data):
    # 转为二进制数据
    data = data.encode('utf-8')
    # 创建md5对象
    md5 = hashlib.md5()
    # md5进行加密
    md5.update(data)
    # 取出md5加密后的哈希值
    encrypt_result = md5.hexdigest()
    return encrypt_result


# 多用户登录认证装饰器
def auth(roles):
    '''

    :param roles: 不同的身份认证具有不同的功能
    :return:
    '''
    # 放在外边会导致循环导入问题,放在里边不会
    from core import admin, teacher, student
    def login_auth(func_name):
        def inner(*args, **kwargs):
            if roles == 'admin':
                if admin.login_user_admin['username']:
                    res = func_name(*args, **kwargs)
                    return res

                else:
                    admin.login()

            elif roles == 'teacher':
                if teacher.login_user_teacher['username']:
                    res = func_name(*args, **kwargs)
                    return res

                else:
                    teacher.login()

            elif roles == 'student':
                if student.login_user_student['username']:
                    res = func_name(*args, **kwargs)
                    return res

                else:
                    student.login()

            else:
                print('无权限访问!')

        return inner

    return login_auth
